<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>objectFactory</title>
	</head>
	<body>
		
		<script >
			
			var obj = {
				name:'孙悟空',
				age:18,
				sayName:function(){
					alert(this.name);
				}
			}

			/**
			 * 
			 * 使用工厂方法创建对象
			 * 通过该方法可以大批量的创建对象
			 * 
			*/
			function createPerson(){
				var obj = new Object();
				obj.name="swk";
				//....
				return obj;
			}

			function createPerson0(name,age,gender){
				var obj = new Object();
				obj.name="swk";
				//....
				return obj;
			}

			/**
			 * 使用工厂方法创建的对象，使用的构造函数都是object
			 * 无法区别，用构造函数创建
			 * 
			 * 
			 * 创建一个构造函数，专门来创建Person对象
			  构造函数就是一个普通的函数，创建方式和普通函数没有区别
			  不同的是构造函数习惯上首字母大写

			  普通函数是直接调用，而构造函数需要使用new关键字来调用
			 
			 	1.立即创建一个新的对象
				 2.将新建的对象设置为函数中this
				 3.逐行执行函数中的代码
				 4.将新建的对象作为返回值返回
			  * **/
			function Person(){
				this.name = "6666";
			}

			// var per = Person();
			var per = new Person();

			console.log(per);
			// true
			console.log(per instanceof Person);
			// true
			console.log(per instanceof Object);


		</script>
	</body>
</body>
</html>
